package com.hsnn.medstgmini.base.dict.service.impl;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hsnn.medstgmini.base.dict.dao.DicSysDao;
import com.hsnn.medstgmini.base.dict.model.DicSys;
import com.hsnn.medstgmini.base.dict.model.DicSysDicLog;
import com.hsnn.medstgmini.base.dict.service.DicSysManager;
import com.hsnn.medstgmini.util.Pagination;

/**
 * @category 自定义字典
 * @author zhangj
 */
@Service("dicSysManager")
public class DicSysManagerImpl implements DicSysManager {

	@Autowired
	private DicSysDao dicSysDao;

	/**
	 * @category 查询自定义字典列表
	 * @param result
	 * @param dicSys
	 * @return
	 */
	@Override
	public Pagination getDicSysList(Pagination page) {
		return dicSysDao.getDicSysList(page);
	}
	

	/**
	 * @category 启用|停用
	 * @param dicSys
	 * @return
	 */
	@Transactional
	public void changeStatus(DicSys dicSys) {
		dicSysDao.changeStatus(dicSys);
	}

	/**
	 * @category 批量(启用|停用)
	 * @param array
	 * @return
	 */
	@Transactional
	public int batchChangeStatus(List<DicSys> list) {
		return dicSysDao.batchChangeStatus(list);
	}

	/**
	 * @category 根据id查询自定义字典
	 * @param id
	 * @return
	 */
	public DicSys getDicSysById(String id) {
		return dicSysDao.getDicSysById(id);
	}

	
	/**
	 * @category 查询自定义字典维护记录列表
	 * @param page
	 * @param dicSysDicLog
	 * @return
	 */
	public List<DicSysDicLog> getDicSysDicLogList(Pagination page, DicSysDicLog dicSysDicLog) {
		return dicSysDao.getDicSysDicLogList(page, dicSysDicLog);
	}
	
	public List<DicSys> getDicSysByClassName() {
		return dicSysDao.getDicSysByClassName();
	}
	
	public List<DicSys> getAll() {
		return dicSysDao.getAll();
	}
	/**
	 * @category 根据分类编码查询自定义字典
	 * @param classifyCode
	 * @return
	 */
	@Override
	public List<DicSys> getDicSysByClassifyCode(String classifyCode) {
		return dicSysDao.getDicSysListByPropertyName("classifyCode", classifyCode);
	}

	
	/**
	 * 基础库 系统字典  维护日志
	 * @param result
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Override
	public Pagination getSysDicLogList(Pagination page) {
		page = dicSysDao.getSysDicLogList(page);
		List<Map<String,Object>> list = (List<Map<String,Object>>)page.getRows();
		for(int i = 0;i<list.size();i++){
			String detail = list.get(i).get("detail")==null?"":list.get(i).get("detail").toString();
			if(StringUtils.isNotBlank(detail)){
				if(detail.toString().indexOf(",")<0){
					detail = "新增数据:<br/>".concat(detail.replaceAll(";", "<br/>"));
					
				}else{
					detail= detail.replaceAll(":", "由");
					detail= detail.replaceAll(",", "变为");
					detail= detail.replaceAll(";", "<br/>");
				}
			}
			list.get(i).put("detail", detail);
		}
		page.setRows(list);	
		return page;
	}	
	
	/**
	 * 基础库 系统在字典  日志详情
	 * @param result
	 * @return
	 */
	@Override
	public List<Map<String, Object>> getDicSysDicLogListDetail(Pagination page) {
		return dicSysDao.getDicSysDicLogListDetail(page);
	}

	/**
	 * 自定义字典  新增和编辑
	 * @param dicSys
	 */
	@Transactional
	@Override
	public void addAndEdit(Pagination page) {
		this.dicSysDao.addAndEdit(page);
		
	}

	/**
	 * 根据code或name查看有无重复数据
	 * @param code,name
	 * @return
	 */
	@Override
	public List<DicSys> getDicSysBy(String key, String value, String id) {
		return dicSysDao.getDicSysBy(key, value, id);
	}

	/**
	 * @category 根据条件查询系统字典
	 * @author zhouqi
	 * @date 2015年9月25日14:52:51
	 * @param conditions
	 * @return
	 */
	public List<DicSys> getSysDicByCondition(Map<String, String> conditions){
		return dicSysDao.getSysDicByCondition(conditions);
	}
	public void exportExcel(Pagination page,OutputStream os){
		dicSysDao.exportExcel(page,os);
	}
	
}